// pages/index/index.js
var app = getApp();
import Toast from 'tdesign-miniprogram/toast/index';

Page({

  /**
   * 页面的初始数据
   */
  data: {
    isHidden: false,
    allPrice: 0,
    selectedMenuIndex: 0, // 默认选中第一个菜单项
    selectedDishes: [], // 存放弹框中已选的菜品信息
    dishes: [
      {
        "id": 1,
        "name": "韩式炒年糕",
        "category_id": 6,
        "price": 29,
        "sales": 124,
        "count":0,
        "totalPrice":0,
        "dish_img": "/image/meal/dish_img.png",
      },
      {
        "id": 2,
        "name": "红烧牛肉面",
        "category_id": 6,
        "price": 5,
        "sales": 124,
        "count":0,
        "totalPrice":0,
        "dish_img": "/image/meal/dish_img.png",
      },
      {
        "id": 3,
        "name": "红烧牛肉面",
        "category_id": 6,
        "price": 9.96,
        "sales": 129,
        "count":0,
        "totalPrice":0,
        "dish_img": "/image/meal/dish_img.png",
      },
      {
        "id": 4,
        "name": "红烧牛肉面",
        "category_id": 6,
        "price": 5.96,
        "sales": 124,
        "count":0,
        "totalPrice":0,
        "dish_img": "/image/meal/dish_img.png",
      },
    ],
    imgSrcs: [
      'https://cdn-we-retail.ym.tencent.com/tsr/home/v2/banner1.png',
      'https://cdn-we-retail.ym.tencent.com/tsr/home/v2/banner2.png',
      'https://cdn-we-retail.ym.tencent.com/tsr/home/v2/banner3.png',
      'https://cdn-we-retail.ym.tencent.com/tsr/home/v2/banner4.png',
      'https://cdn-we-retail.ym.tencent.com/tsr/home/v2/banner5.png',
      'https://cdn-we-retail.ym.tencent.com/tsr/home/v2/banner6.png'
    ],
    tabList: [
      {
        text: '精选推荐',
        key: 0,
      },
      {
        text: '夏日防晒',
        key: 1,
      },
      {
        text: '二胎大作战',
        key: 2,
      },
      {
        text: '人气榜',
        key: 3,
      },
      {
        text: '好评榜',
        key: 4,
      },
      {
        text: 'RTX 30',
        key: 5,
      },
      {
        text: '手机也疯狂',
        key: 6,
      },
    ],
    current: 1,
    autoplay: true,
    duration: '500',
    interval: 5000,
    navigation: { type: 'dots' },
    swiperImageProps: { mode: 'scaleToFill' },
    "d_image": "/image/icon/list_null.png",
  },
  privateData: {
    tabIndex: 0,
  },
  tabChangeHandle(e) {
    this.privateData.tabIndex = e.detail;
    console.log("点击了",this.privateData.tabIndex)
    // this.loadGoodsList(true);
  },
  navToActivityDetail({ detail }) {
    const { index: promotionID = 0 } = detail || {};
    console.log("点击了轮播图,",promotionID)
    // wx.navigateTo({
    //   url: `/pages/promotion-detail/index?promotion_id=${promotionID}`,
    // });
  },
  // 点击添加按钮
  increaseCount(e) {
    var that = this;

    // 判断用户是否登录，如果未登录，弹框提示，底部登录组件展示
    if (!getApp().globalData.isUserLoggedIn) {
      // 弹窗提示去登录
      Toast({
        context: this,
        selector: '#t-toast',
        message: '🐰hiao，给我去登录！',
      });
      // 弹出登录弹框
      that.setData({
        isHidden: false,
      });
    } else {
      // 如果用户已经登录，点击加号，计算价格，加入到底部价格处
      const index = e.currentTarget.dataset.index;
      const dishes = this.data.dishes.slice();
      dishes[index].count += 1;

      // 将选中的菜品添加到 selectedDishes 中
      const selectedDish = {
        id: dishes[index].id,
        name: dishes[index].name,
        price: dishes[index].price,
        count: dishes[index].count,
        dish_img: dishes[index].dish_img,
      };

      const selectedDishes = this.data.selectedDishes.slice();
      const existingIndex = selectedDishes.findIndex(item => item.id === selectedDish.id);

      if (existingIndex !== -1) {
        // 如果已经存在于 selectedDishes 中，则更新数量
        selectedDishes[existingIndex].count = selectedDish.count;
      } else {
        // 如果不存在于 selectedDishes 中，则添加
        selectedDishes.push(selectedDish);
      }

      this.setData({
        dishes,
        selectedDishes,
      });

      // 计算当前商品价格
      this.calculateItemPrice(index);
      // 计算所有商品价格
      this.calculateTotalPrice();
    }
  },

  // 点击减少按钮
  decreaseCount(e) {
    const index = e.currentTarget.dataset.index;
    const dishes = this.data.dishes.slice();
    const selectedDishes = this.data.selectedDishes.slice();

    // 找到对应的商品
    const selectedItem = selectedDishes.find(item => item.id === dishes[index].id);

    // 减少商品数量
    dishes[index].count = Math.max(0, dishes[index].count - 1);

    // 如果该商品已存在于 selectedDishes 中，则更新其数量；否则，移除该商品
    if (selectedItem) {
      selectedItem.count = Math.max(0, selectedItem.count - 1);

      // 如果 count 减少到 0，则从 selectedDishes 中移除该商品
      if (selectedItem.count === 0) {
        const selectedIndex = selectedDishes.indexOf(selectedItem);
        selectedDishes.splice(selectedIndex, 1);
      }
    }

    // 更新页面数据
    this.setData({
      dishes,
      selectedDishes,
    });

    // 计算当前商品价格
    this.calculateItemPrice(index);
    // 计算所有商品价格
    this.calculateTotalPrice();
  },


  // 计算当前商品价格的方法
  calculateItemPrice(index) {
    const dishes = this.data.dishes.slice();
    const currentItem = dishes[index];
    const totalPrice = (currentItem.price * currentItem.count).toFixed(2); // 保留两位小数
    // 更新当前商品的总价
    this.setData({
      [`dishes[${index}].totalPrice`]: totalPrice,
    });
  },

  // 获取所有商品总价的方法
  calculateTotalPrice() {
    const dishes = this.data.dishes;
    let totalPrice = 0;
    for (let i = 0; i < dishes.length; i++) {
      totalPrice += parseFloat(dishes[i].totalPrice || 0);
    }
    // 将总价保留两位小数
    totalPrice = totalPrice.toFixed(2);
    // 更新页面数据
    this.setData({
      allPrice: totalPrice,
    });
  },


  handlePopup() {
    this.setData({ visible: true });
  },
  onVisibleChange(e) {
    this.setData({
      visible: e.detail.visible,
    });
  },
  handleSettlement() {
    Toast({
      context: this,
      selector: '#t-toast',
      message: '去结算',
    });
  },
  // 新增方法，用于清空已选菜品
  clearSelectedDishes() {
    // 清空 selectedDishes
    this.setData({
      selectedDishes: [],
    });

    // 遍历 dishes，将所有商品的 count 设置为 0
    const dishes = this.data.dishes.map(item => ({
      ...item,
      count: 0,
    }));

    // 更新页面数据
    this.setData({
      dishes,
    });

    // 计算所有商品价格
    this.calculateTotalPrice();
  },
  // 新增方法，用于增加弹框中菜品数量
  increasePopupCount(e) {
    const index = e.currentTarget.dataset.index;
    const selectedDishes = this.data.selectedDishes.slice();

    // 增加弹框中的商品数量
    selectedDishes[index].count += 1;

    // 更新页面数据
    this.setData({
      selectedDishes,
    });

    // 同步更新菜品区域的数量和价格信息
    this.syncDishesInfo();

    // 计算所有商品价格
    this.calculateTotalPrice();
  },

  // 新增方法，用于同步更新菜品区域的数量和价格信息
  syncDishesInfo() {
    const dishes = this.data.dishes.slice();
    const selectedDishes = this.data.selectedDishes.slice();

    // 遍历 selectedDishes，同步更新 dishes 中的数量和价格信息
    selectedDishes.forEach(selectedItem => {
      const index = dishes.findIndex(item => item.id === selectedItem.id);

      if (index !== -1) {
        dishes[index].count = selectedItem.count;
        this.calculateItemPrice(index);
      }
    });

    // 更新页面数据
    this.setData({
      dishes,
    });
  },

  // 新增方法，用于减少弹框中菜品数量
  decreasePopupCount(e) {
    const index = e.currentTarget.dataset.index;
    const selectedDishes = this.data.selectedDishes.slice();

    // 减少 count 数量
    selectedDishes[index].count = Math.max(0, selectedDishes[index].count - 1);

    // 如果 count 为 0，则从 selectedDishes 中删除对应的商品，并将 dishes 中对应商品的 count 也更新为 0
    if (selectedDishes[index].count === 0) {
      const removedItem = selectedDishes.splice(index, 1)[0];

      // 更新 dishes 中对应商品的 count 为 0
      const dishes = this.data.dishes.slice();
      const dishIndex = dishes.findIndex(item => item.id === removedItem.id);
      if (dishIndex !== -1) {
        dishes[dishIndex].count = 0;
        this.calculateItemPrice(dishIndex);
      }
    }

    // 更新页面数据
    this.setData({
      selectedDishes,
    });

    // 同步更新菜品区域的数量和价格信息
    this.syncDishesInfo();

    // 计算所有商品价格
    this.calculateTotalPrice();
  },


  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    // 在页面加载时根据全局变量判断是否登录
    if (app.globalData.isUserLoggedIn) {
      // 如果用户已登录，可以执行相应的逻辑
      this.setData({
        isHidden: true,
      });
    } else {
      // 如果用户未登录，可以执行相应的逻辑

    }
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})